using System;
using System.Collections.Generic;

namespace Atomic.Thermodynamics.Electrons
{
	/// <summary>
	/// The convension employed by VASP is assumed here. The density of states function is a step function that jumps
	/// at discrete points (a right-continuous function), so that when integrated between neighboring points,
	/// the correct value as stated by VASP is obtained. This is the same as the integrated density of states function
	/// being linearly interpolated between the points.
	/// http://cms.mpi.univie.ac.at/vasp/vasp/DOSCAR_file.html
	/// </summary>
	public interface IElectronicStateDensity
	{
		/// <summary>
		/// Electronic density of states.
		/// </summary>
		IEnumerable<IElectronicStateDensityPoint> Points
		{
			get;
		}

		/// <summary>
		/// Fermi energy (eV) per unit cell. The highest energy of ground state electronic states such that the correct number of valence electrons is reached.
		/// </summary>
		double FermiEnergy
		{
			get;
		}

		/// <summary>
		/// Number of valence electrons per unit cell. Could be a non-integral number to allow a homogeneous background charge.
		/// http://cms.mpi.univie.ac.at/vasp/vasp/NELECT.html
		/// </summary>
		double Electrons
		{
			get;
		}
	}
}
